name: Build obsidian plugin

on:
    push:
        tags:
            - "*"

env:
    PLUGIN_NAME: obsidian-git

permissions:
    contents: write

jobs:
    build:
        runs-on: ubuntu-latest
        steps:
            - uses: actions/checkout@v4
            - uses: pnpm/action-setup@v2
              with:
                  version: latest
            - name: Build
              id: build
              run: |
                  pnpm install
                  pnpm run build --if-present
                  mkdir ${{ env.PLUGIN_NAME }}
                  cp main.js manifest.json styles.css ${{ env.PLUGIN_NAME }}
                  zip -r ${{ env.PLUGIN_NAME }}.zip ${{ env.PLUGIN_NAME }}
            - name: Create Release
              id: create_release
              uses: softprops/action-gh-release@v1
              with:
                  tag_name: ${{ github.ref }}
                  name: ${{ github.ref_name }}
                  generate_release_notes: true
                  draft: false
                  prerelease: false
            - name: Upload zip file
              id: upload-zip
              uses: actions/upload-release-asset@v1
              env:
                  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
              with:
                  upload_url: ${{ steps.create_release.outputs.upload_url }}
                  asset_path: ./${{ env.PLUGIN_NAME }}.zip
                  asset_name: ${{ env.PLUGIN_NAME }}-${{ github.ref_name }}.zip
                  asset_content_type: application/zip
            - name: Upload main.js
              id: upload-main
              uses: actions/upload-release-asset@v1
              env:
                  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
              with:
                  upload_url: ${{ steps.create_release.outputs.upload_url }}
                  asset_path: ./main.js
                  asset_name: main.js
                  asset_content_type: text/javascript
            - name: Upload manifest.json
              id: upload-manifest
              uses: actions/upload-release-asset@v1
              env:
                  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
              with:
                  upload_url: ${{ steps.create_release.outputs.upload_url }}
                  asset_path: ./manifest.json
                  asset_name: manifest.json
                  asset_content_type: application/json
            - name: Upload styles.css
              id: upload-css
              uses: actions/upload-release-asset@v1
              env:
                  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
              with:
                  upload_url: ${{ steps.create_release.outputs.upload_url }}
                  asset_path: ./styles.css
                  asset_name: styles.css
                  asset_content_type: text/css
